# Makefile内容通常由以下部分组成
# <目标>: <前置依赖>
#   <需要执行的命令>

#第一个目标是默认目标，可以直接make就行
# 被依赖可以是一个目标，也可以是一个文件
# 一般会将目标名与生成的文件同名
# 为什么要声明依赖？ 如果修改了文件，重新执行目标会执行，如果没有声明就不会
# 为什么目标名要与生成文件同名？ 如果不同名，每次重新执行目标命令都不会执行（依赖没变）

# 定义变量 
objects := main.o hello.o
# 定义伪目标  不生成对应名称的文件的目标
.PHONY: clean

main: $(objects)
	gcc $(objects) -o main

main.o: main.c hello.h
	gcc -c main.c

hello.o: hello.c
	gcc -c hello.c

clean:
	-rm $(objects) main